Thermometer codes are generally useful for realizing monotonic signal control. Traditional thermometer code is implemented with an N-bit shift register storing continuous patterns of ones and zeros, where ‘N’ is an integer greater than two. However, traditional thermometer code implemented as by the N-bit shift register requires a sequential unit (e.g., a flip-flop) per bit and associated logic to control the sequential unit. For large thermometer codes, e.g., N=64, traditional thermometer code implemented as the N-bit shift register negatively impacts silicon area, power consumption, and clock load i.e., it results in larger silicon areas, consumes high power, and puts excessive loads on clock distribution network requiring more clock buffers.
An alternative traditional thermometer code generator uses a bi-directional grey-code counter with a state decoder. This approach reduces the number of flip-flops required, lending this technique to larger code lengths. However, the grey-code approach is more complex to design and modify because arbitrary code lengths each require a unique design with increased complexity. For example, a three flip-flop counter based design could only generate a maximum seven-bit code. Accordingly, for large thermometer codes, e.g., N=64, at least nine flip-flops are needed which again result in larger silicon areas, consumes high power, and puts excessive loads on clock distribution network requiring more clock buffers.